#include <dretve.h>
#include <ispis.h>
#include <vrijeme.h>

static int sem;

static void tdretva(void *x)
{
	int i, id = id_dretve();
	vrijeme_t koliko;
	koliko.sekunde = 1;
	koliko.nsekunde = 0;
	
	ispisi("Dretva %d pocetak\n", id);

#define NN 3
	for (i = 0; i < NN; i++) {
		cekaj_sem(sem);

		ispisi("Dretva %d u K.O. \t(%d)\n", id, i + 1);
		odgodi(koliko);

		ispisi("Dretva %d u N.K.O. \t(%d)\n", id, i + 1);

		postavi_sem(sem);
	}
#undef NN

	ispisi("Dretva %d zavrsava\n", id);
}

void test_sinkro()
{
	ispisi("\n[%s:%s:%d]\n", __FILE__, __FUNCTION__, __LINE__);

	int dr1, dr2;
	
	sem = dohvati_sem(1);
	if (sem == -1) {
		ispisi("nema reda uvjeta!\n");
		return;
	}
	
	dr1 = stvori_dretvu(tdretva, NULL);
	dr2 = stvori_dretvu(tdretva, NULL);
	if (dr1 == -1 || dr2 == -1)
		return;

	cekaj_kraj_dretve(dr1);
	cekaj_kraj_dretve(dr2);
	
	obrisi_sem(sem);
}
